#include <stdlib.h>
#include <string.h>

#include <TabLite.h>

char* TabElemGetStr(TabElem* elem)
{
    if (!elem || elem->tag != TAB_TAG_STR)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;        
    }
    TabErrorSet(TAB_ERROR_OK); 
    return elem->valStr;
}

unsigned long TabElemGetHex(TabElem* elem)
{
    if (!elem || elem->tag != TAB_TAG_HEX)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return 0;    
    }
    TabErrorSet(TAB_ERROR_OK); 
    return elem->valHex;
}

long TabElemGetInt(TabElem* elem)
{
    if (!elem || elem->tag != TAB_TAG_INT)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return 0;
    }
    TabErrorSet(TAB_ERROR_OK); 
    return elem->valInt;
}

double TabElemGetDec(TabElem* elem)
{
    if (!elem || elem->tag != TAB_TAG_DEC)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return 0;
    }
    TabErrorSet(TAB_ERROR_OK); 
    return elem->valDec;
}

TabLite* TabElemGetTab(TabElem* elem)
{
    if (!elem || elem->tag != TAB_TAG_TAB)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;
    }
    TabErrorSet(TAB_ERROR_OK); 
    return elem->valTab;
}